home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / compress / unp320a.zip / UNP.DOC < prev    next >
Text File  |  1994-01-26  |  34KB  |  860 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                   ┌┐  ┬ ┌┬─┐ ┬ ┬┬──┐      ┌──┬┐    ────┐ ┌┬──┐
  7.                   ││  │ ││ │ │ ││  │         ││        │ ││  │
  8.                   ││  │ ││ │ │ │├──┘       ──┤│    ┌┬──┘ ││  │┌┬──┐
  9.                   ││  │ ││ │ │ ││            ││ ┌┐ ││    ││  ││├──┤
  10.                   └┴──┘ └┘ └─┘ └┘         └──┴┘ └┘ └┴─── └┴──┘┴┴  ┴
  11.                  ─────────────────────────────────────────────
  12.               Unregistered evaluation copy.
  13.  
  14.  
  15.                 Written by Ben Castricum
  16.  
  17.                  August 26, 1993
  18.  
  19.  
  20.        This is the documentation belonging to and explaining the use of:
  21.  
  22.                    UNP V3.20a
  23.               Compressed executable file expander
  24.  
  25.  
  26.    TOPICS covered in this document:
  27.  
  28.      DISCLAIMER
  29.      PURPOSE OF UNP
  30.      REQUIREMENTS
  31.      GENERAL INFO
  32.      HOW TO USE UNP
  33.      UNP IN ACTION
  34.      MESSAGES
  35.          WHAT UNP CAN HANDLE
  36.          NOTES ON COMPRESSORS
  37.      ERRORLEVEL VALUES
  38.      WHERE TO FIND UNP
  39.      HOW TO REGISTER
  40.          STILL LOOKING
  41.          THANKS
  42.          CONTACTING ME
  43.  
  44.  
  45.  
  46. DISCLAIMER:
  47. -----------
  48. Although UNP has been tested on several systems, I cannot guarantee that
  49. UNP will be without bugs.  Therefore, I do not take responsibility for any
  50. damage directly or indirectly caused by UNP as a result of known or
  51. unknown errors in it.
  52.  
  53.  
  54.  
  55. PURPOSE OF UNP:
  56. ---------------
  57. UNP tries to reverse the action which programs like PKLITE and LZEXE
  58. perform.  In case you don't know, those programs use data compression on
  59. executable files.  Yet they leave these compressed files in a state such
  60. that they can still be normally executed.  This is great if you want to
  61. save disk space, but it has its disadvantages.  Anyone can now spread a
  62. virus; just compress an infected file and the virus is invisible!
  63. Debugging also becomes a lot more difficult since the code has become
  64. unreadable.  These are the primary reasons behind my writing UNP.  I
  65. could make up some story about loading/decompressing time, but we are
  66. probably talking about a few 100ths of a second.  Well, at least I don't
  67. notice any delay on my 66Mhz...
  68.  
  69. Not only can UNP expand compressed executable files, it is also able to
  70. remove other kinds of routines from such programs.  For instance,
  71. Central Point's Anti-virus (tm) Immunize codes can be safely removed.
  72. Though this removal is currently limited to only a few routines, in the
  73. future this ability might be greatly expanded.
  74.  
  75.  
  76.  
  77. REQUIREMENTS:
  78. -------------
  79. To run UNP you need at least a 8086 microprocessor.  However if you want
  80. to take full advantage of UNP, MS-DOS 5.0 (or higher) is recommended since
  81. UNP tries to allocate UMBs.  Lower versions of DOS will work without much
  82. difference since UNP only uses base memory and UMBs.  It requires about
  83. 15k of memory, with the additional amount of memory required depending on
  84. the program being processed.
  85.  
  86.  
  87.  
  88. GENERAL INFO:
  89. -------------
  90. Before you start using UNP, I would like to point out a few things which
  91. you might take into consideration.
  92.  
  93. Compressed EXE files containing an overlay may not work correctly after
  94. they have been decompressed.  Decompression expands the code size of the
  95. EXE file which also means that the overlay moves up.  Some programs do not
  96. check where the overlay currently is but just use a constant to get the
  97. overlay.  If this is the case, most anything can happen.
  98.  
  99. When you use UNP to convert a file to another structure, please take
  100. into consideration that the converted program never runs under the exact
  101. same conditions as it did before.  Though these differences are likely
  102. not to cause any problems with most programs, there are always programs
  103. which expect just that what is changed by conversion.
  104.  
  105. One way to protect yourself against problems caused by such problems is
  106. to use UNP's -b which is .BAK backup file creation option to create a
  107. copy of the original compressed file.  If, after running the
  108. uncompressed program you find an error, you can simply delete the bad
  109. copy and rename the .BAK file.
  110.  
  111.  
  112.  
  113. HOW TO USE UNP:
  114. ---------------
  115. To get help type UNP on the command line without parameters or use the
  116. '-?' switch.  The first line of the help screen is a short line
  117. describing how to pass information to UNP.  Let's analyze this step by
  118. step.
  119.  
  120.  
  121. usage: UNP command [options] [d:][/path]Infile [[d:][/path]Outfile]
  122.  
  123.  
  124. * commands:
  125. e = expand compressed file (default)
  126.    This command expands the compressed file.  If you do not specify a
  127.    command, UNP will use this by default.  Using this command without a
  128.    wildcard will result in unpacking all files in the current directory.
  129.  
  130. c = convert to COM file
  131.    Some .EXE files can be converted to .COM files.  You can do this by
  132.    using this command.  You should only convert a file when you know
  133.    exactly what you are doing (see general info section).
  134.  
  135. i = info only
  136.    If you just want some information about the file, this is the command
  137.    to use.  UNP will show all information like the E command but will
  138.    will not decompress or write the file back.
  139.  
  140. l = load and save, no decompressing (only for EXE files).
  141.    This command loads an .EXE file but does not expand it.  It will be
  142.    written back just like a decompressed file would be written back.  This
  143.    is useful in case you want to remove an overlay or remove irrelevant
  144.    header data.
  145.  
  146. s = search for compressed files
  147.    When you use this command, only a small list of compressed files
  148.    matching the Infile wildcard will be generated.  The list created will
  149.    be in the form of "filename.ext (compressor)".
  150.  
  151. x = convert to EXE file
  152.    Some compressors can only compress .EXE files (like LZEXE).  With this
  153.    command you can convert a .COM file to an .EXE file.  The resulting
  154.    file will be written back with an .EXE extension by default.
  155.  
  156.  
  157. * options:
  158. -? = help (this screen)
  159.    For a list of UNP commands or options use this switch.  Any other
  160.    switch or command used on the same line will be ignored.
  161.  
  162. -a = automatic retry
  163.    Some files have been altered more than once.  This switch will make
  164.    UNP to process the file again when it was changed.  Useful when you
  165.    want to uncompress a file which also has been Immunized by CPAV.
  166.  
  167. -b = make backup .BAK file of original
  168.    If you want to keep a backup of your original file (very wise) use this
  169.    switch.  The original file will be renamed to a file with a .BAK
  170.    extension.
  171.  
  172. -c = ask for confirmation before decompressing
  173.    This will force UNP to ask you if you want to decompress the file each
  174.    time it has found a new compressed file.
  175.  
  176. -h = remove irrelevant header data
  177.    Most linkers add useless data to the .EXE header.  This switch removes
  178.    all such useless information, thus shrinking the header size.
  179.  
  180. -i = do not intercept INT 21h calls
  181.    By default UNP watches the DOS interrupt (21h) to check if the program
  182.    is running as expected.  Any unexpected call to INT 21h will make UNP
  183.    abort the process.  If you have any weird TSRs resident you might have
  184.    to use this switch.  I had to use it while debugging with Turbo
  185.    Debugger.
  186.  
  187. -k = pklite signature; - = don't add, + = add always, ? = ask
  188.    With this switch you can handle the pklite signature.  There are 3
  189.    possibilities :
  190.    -k- = the pklite signature will not be added, this will also be the
  191.      case if you only use -k (to stay dislite compatible)
  192.    -k+ = always add the pklite signature, this is the default of UNP so
  193.      you can just as well leave the -k switch away if you want this
  194.    -k? = when you use this, UNP will ask you each time it has found a
  195.      signature (like UNP V3.01 or earlier did)
  196.  
  197. -l = allways use loadfix
  198.    Starting with V3.12, UNP will not fill the first 64k of base memory.
  199.    (this allows larger files to be processed)  When UNP detects a file
  200.    which does requires such a loadfix, it will reload the program with the
  201.    first 64k allocated.  If you are planning to unpack several EXEPACKed
  202.    files you might want to use this switch to avoid reloading.  This
  203.    switch can only improve UNP's processing speed, it does not add
  204.    anything new.
  205.  
  206. -o = overwrite output file if it exists
  207.    If you want to have the destination file overwritten, you can avoid
  208.    the question for permission by specifying this switch on the command
  209.    line.
  210.  
  211. -p = align header data on a page
  212.    It is said that .EXE files with a header size that is a multiple of
  213.    512 bytes load faster (this could make sense since a sector is also
  214.    512 bytes).  This switch will expand the header to the nearest
  215.    multiple of 512 bytes.
  216.  
  217. -r = remove overlay data
  218.    If something is appended to an .EXE it is called an overlay.  This
  219.    switch will let the file size of the outfile be the same as the load
  220.    image.  So anything that was appended to the file will be thrown away.
  221.    An overlay can be used for all kinds of data, so removing this can
  222.    result in throwing away something useful.
  223.  
  224. -u = update file time/date to current time/date
  225.    By default UNP sets the time/date of the destination file to the same
  226.    time/date as the original source file.  If you want to have it updated
  227.    to the current time/date use this switch
  228.  
  229. -v = verbose
  230.    When you use this switch UNP will give you some additional information.
  231.    I added this switch for debugging purposes.
  232.  
  233.  
  234. *[d:][/path]Infile
  235.    The wildcard UNP uses for selecting the files it will process can be
  236.    found as follows:
  237.    if you have specified a command but no Infile the wildcard '*.*' will
  238.    be used.  If you have specified an Infile ofcourse this will be used
  239.    except for wildcards without an extension; those will get '.*' appended
  240.    and a flag will be set to select only .COM and .EXE files.  If your
  241.    Infile ends with a '\', '*.*' will be appended.
  242.  
  243.  
  244. *[[d:][/path]Outfile]
  245.    The destination file is optional. If you don't specify one, the source
  246.    file will be overwritten.  You cannot use wildcards in this.  Also, you
  247.    should not specify a destination file when you want to decompress more
  248.    than one file.
  249.  
  250.  
  251.  
  252. UNP IN ACTION:
  253. --------------
  254. When you execute UNP you can get several lines of information. Following
  255. is an explanation of what those lines mean:
  256.  
  257.  
  258. processing file : [D:][PATH\]FILENAME.EXT
  259.  
  260.    This shows the name of the file being processed as specified on the
  261.    command line.
  262.  
  263.  
  264. file size       : X
  265.  
  266.    The file size reported by DOS will be shown here.
  267.  
  268.  
  269. file structure  :
  270.  
  271.    UNP recognizes 4 file structures:
  272.    - executable (EXE)
  273.       If the file starts with the 'MZ' or 'ZM' signature and does not
  274.       contain the 'NE' signature then this structure is assumed.  With EXE
  275.       files there are two options UNP recognizes:
  276.       - convertible
  277.          The file can be converted to a COM file structure.
  278.       - loads into high memory
  279.          The program is loaded as high as possible in the allocated memory
  280.          block (this requires some other loading routines).
  281.  
  282.    - Windows or OS/2 1.x new executable
  283.       The file starts with the 'MZ' or 'ZM' signature and contains the
  284.       'NE' signature.
  285.  
  286.    - data file
  287.       The file does not contain the 'MZ' or 'ZM' signature but is too
  288.       large to be a COM file.
  289.  
  290.    - binary (COM)
  291.       This is shown in all other cases.
  292.  
  293.  
  294. EXE part sizes  : header X bytes, code Y bytes, overlay Z bytes
  295.  
  296.    Of course you will only get this line if you are processing an EXE file.
  297.    This shows how the file is built up.  If you add X Y and Z you should
  298.    get the file size reported by DOS.
  299.  
  300.  
  301. processed with  :
  302.  
  303.    If UNP recognizes some program's work in the file, it will try to tell
  304.    you what program it recognizes and when possible what version of that
  305.    program.  If UNP does not really know what program has changed your
  306.    file but recognizes some programs work then that programs name will be
  307.    displayed between brackets (e.g. [EXEPACK]).  If you have got such a
  308.    file then there are two possibilities, UNP knows about this program but
  309.    it is just unsure about the name/version or UNP doesn't know about it
  310.    at all.  To find out if UNP knows about it, use the -v switch on this
  311.    program.  If you got a message about breakpoints (see MESSAGES) then
  312.    UNP doesn't know this routine, I appreciate it if you would send me
  313.    that program or tell me where to find it.
  314.  
  315.  
  316. action          :
  317.    UNP not only decompress files it has the ability to do other
  318.    things as well.  There can only be one action performed at a time.
  319.    This is a list of actions UNP reports:
  320.  
  321.    - decompressing... done
  322.       This is the decompression action, probably the most used action.
  323.  
  324.    - removing immunize code... done
  325.       When a file has been immunized with Central Point Anti-Virus, a
  326.       piece of code is added to the file.  UNP has the ability to remove
  327.       this code.
  328.  
  329.    - removing scrambling... done
  330.       UNP recognizes a few scrambling routines. When you see this message
  331.       you have got a program which contains one.
  332.  
  333.    - removing 'XX' signature
  334.       Starting with UNP V3.02, the PKLITE signature added to fake PKLITE
  335.       decompression can be removed.  This message will be shown if UNP has
  336.       found a removable signature and is trying to remove it.
  337.  
  338.    - converting to EXE file structure
  339.       The file will be converted to one with an .EXE file structure
  340.  
  341.    - converting to COM file structure
  342.       The file will be converted to one with an .COM file structure
  343.  
  344.  
  345. new size        : X
  346.  
  347.    When the file has been written back UNP reports the new file size to
  348.    you in this line.
  349.  
  350.  
  351. All other messages are explained in the section below.
  352.  
  353.  
  354.  
  355. MESSAGES:
  356. ---------
  357. UNP has 6 kinds of messages other than the usual information it can display:
  358.  
  359. * Questions.  Although I tried to make this program as smart as possible,
  360.   it still can't read minds and things like that.  So sometimes it will
  361.   ask you for something it wants to know.
  362.  
  363. Add 'pk'/'PK' signature to fake PKLITE decompression (y/n)?
  364.    This question will only appear if you use -k? on the command line.
  365.    Answering 'Y' to this question will add 14 bytes of code that fakes
  366.    PKLITE decompression.  The correct signature will be displayed and used
  367.    automatically ('pk' for V1.20 and others 'PK').
  368.  
  369. File FILENAME.EXT already exists.  Overwrite (y/n)?
  370.    The filename that UNP wants to write the resulting file to already
  371.    exists.  If you haven't specified the -o switch it will ask if it can
  372.    overwrite it.  Answering 'N' will proceed to the next file.
  373.  
  374. Program is protected, please enter password:
  375.    This question will appear when you are trying to decompress a program
  376.    which is compressed with TINYPROG with the password option.  You are
  377.    asked to type the password used.  This is not to verify whether you are
  378.    the rightful owner or not, but I just couldn't find a way around it.
  379.  
  380. Remove this routine from file (y/n)?
  381.    You have specified the -c switch and UNP has found a file it
  382.    recognizes as being processed with something.  Now it wants to know
  383.    if you like to remove the routine it has found.
  384.  
  385.  
  386. * INFO messages, these messages are only displayed when you have specified
  387.    the -V switch.  I've added them for debugging purposes.
  388.  
  389. INFO- Attempting to increase available memory for decompression.
  390.    This only shows up if you are trying to decompress PKLITE V1.00ß (2).
  391.    When this happens, UNP uses some other strategy to calculate the memory
  392.    it allocates for decompressing.  By default UNP only allocates as less
  393.    memory as possible.  This strategy allocates 15/16 of the memory block
  394.    the program is currently loaded in.
  395.  
  396. INFO - command line = " ... "
  397.    This message shows how UNP has interpreted the things you typed on the
  398.    command line.  Great for debugging purposes!
  399.  
  400. INFO - First 64K of base memory has been fully allocated.
  401.    Some compressors use the segment below their own code.  Since it is
  402.    possible to load the operating system in upper/high memory there might
  403.    not be a complete segment available.  This message tells you there has
  404.    been memory allocated to ensure there is a complete segment below.
  405.    Note that this is the same thing that the program LOADFIX.COM supplied
  406.    with MS-DOS 5 does.
  407.  
  408. INFO - Overlay copy overruled, overlay not copied to destination file.
  409.    Normally UNP copies any overlay found on the original program to the
  410.    destination.  This is one of the exceptions.  CRUNCHER and SEA-AXE use
  411.    the overlay to store the compressed data for the file.  Copying the
  412.    overlay would result in a program containing twice its code, once in
  413.    compressed and once in the decompressed form.  This message indicates
  414.    that UNP has removed the overlay to avoid this problem.
  415.  
  416. INFO - Program loaded at XXXXh, largest free memory block: X bytes.
  417.    Pretty obvious.  The address where UNP is loaded is displayed along
  418.    with the largest block it can allocate.
  419.  
  420. INFO - Unknown program, breakpoints are : GS-XXXX, GI-XXXX, QT-XXXX.
  421.    Some routines that I am using are a bit better than the rest because
  422.    they try to determine offsets rather than comparing signatures.  If
  423.    such a smart routine has found breakpoints but can not find any
  424.    identification string belonging to these, this message is shown with
  425.    the breakpoints it has found.
  426.  
  427. INFO - Using FILENAME.EXT as temp file.
  428.    UNP tells you what it will be using as temporary file.  This name is
  429.    composed of the TEMP variable and the default temporary name.
  430.  
  431. INFO - Wildcard matches X filename(s), stored at XXXXh.
  432.    This tells you how many filenames UNP has found that match the wildcard
  433.    and where it has stored the names found.
  434.  
  435.  
  436. * WARNING messages.  UNP sometimes takes actions the user should be
  437.    notified of.  In those cases a warning message is displayed.
  438.  
  439. WARNING - Adding 'XX' signature to fake PKLITE decompression.
  440.    The program you are decompressing was compressed by PKLITE V1.14 or
  441.    higher with extra compression.  By default UNP adds 14 bytes of code
  442.    that will let the program think it is still compressed.  To remove
  443.    this piece of code you can use UNP E on it.
  444.  
  445. WARNING - File adds 'XX' signature (added by UNP V3.01 or earlier).
  446. WARNING - File adds 'XX' signature (added by DISLITE V1.15 or higher).
  447.    Your file has already been decompressed and has the signature to fake
  448.    PKLITE decompression appended.  This signature is ignored to continue
  449.    the search for more decompression routines.
  450.    All signatures added by UNP V3.02 or higher and the DISLITE signatures
  451.    which do not use a relocation item will act as a decompression routine,
  452.    so UNP E will remove them.
  453.  
  454. WARNING - File already has .BAK extension, no backup created.
  455.    UNP has just unpacked a .BAK file and you have specified the -B switch.
  456.    Creating a .BAK file of a file which already has a .BAK extension is
  457.    impossible so the source file will be overwritten and there will be no
  458.    backup created.
  459.  
  460. WARNING - File loaded too low in memory to decompress, reloading.
  461.    Files compressed with EXEPACK require one segment (64k) below their own
  462.    code to successfully decompress.  When there is no complete segment
  463.    available, UNP displays this message and reloads the file higher in
  464.    memory. (also see msg. 'INFO - First 64K...' and -L switch)
  465.  
  466. WARNING - Infile and Outfile are same, Outfile ignored.
  467.    You have specified the file twice on the command line, meaning that the
  468.    destination file is the same as the source file.  Since this is the
  469.    default situation the second name is ignored.
  470.  
  471. WARNING - Invalid or missing stored header information.
  472.    Normally the compressor used on the program you are trying to
  473.    decompress stores a part of the original header.  UNP has compared
  474.    this information with the data it thinks it should be and has come to
  475.    the conclusion that these mismatch.  If this happens the default UNP
  476.    header will be used.
  477.  
  478. WARNING - Missing last byte, unable to completely restore file.
  479.    The SHRINK compressor does not correctly compresses files containing
  480.    all 256 characters.  When this has happened the last byte of the
  481.    program is thrown away.  It's not possible to get that byte back so the
  482.    decompressed file is mismatching in 1 or more bytes at the end with the
  483.    original file.
  484.  
  485. WARNING - Outfile specified, -B option ignored.
  486.    You have specified a destination file and the -B switch.  Because I see
  487.    no sense in this, the -B option will then be ignored.
  488.  
  489.  
  490. * ERROR messages.  In some cases the desired action cannot be performed or
  491.   has failed.  These messages tell you why this is so and what has
  492.   happened.  UNP will continue with the next file.
  493.  
  494. ERROR - Cannot handle this decompression routine.
  495.    UNP has recognized the way your program has been compressed but is not
  496.    (yet) able to decompress it.
  497.  
  498. ERROR - File already is a .COM file.
  499.    You are trying to convert a .COM file to a .COM file.
  500.  
  501. ERROR - File already is an .EXE file.
  502.    You are trying to convert a .EXE file to a .EXE file.
  503.  
  504. ERROR - File contains overlay.
  505.    One thing you can't have with .COM files is overlays.  If you want to
  506.    convert anyway first remove the overlay.
  507.  
  508. ERROR - File has invalid entrypoint (CS:IP <> FFF0h:0100h)
  509.    To have a converted .EXE file start at the right place, the programs
  510.    initial CS:IP should point to FFF0:0100h.  If this is not true you get
  511.    this error message.
  512.  
  513. ERROR - File has relocation items.
  514.    You tried to convert an .EXE file with relocation items to a .COM file.
  515.    A .COM file cannot handle relocation items.
  516.  
  517. ERROR - File is too large for .COM file.
  518.    The maximum size for a .COM file is much shorter than the one for an
  519.    .EXE file.  So it can happen that the .EXE file is too large to be
  520.    converted to a .COM file.
  521.  
  522. ERROR - Unexpected call to INT 21h, decompression failed.
  523.    When decompressing, UNP passes control to the program.  When it does
  524.    not get control back it is very likely that an interrupt 21h will take
  525.    place sooner or later (INT 21h is the most important interrupt).  UNP
  526.    checks for unexpected calls to this interrupt to ensure it's still in
  527.    control.  To disable this checking use the -i switch.
  528.  
  529.  
  530. * DOS ERROR messages, these errors are things UNP tried to do but for some
  531.   reason your Operating System didn't allowed it.  UNP will quit and will
  532.   have the I/O ERROR exit code.  If you find any use for UNP you are
  533.   probably an experienced DOS user and know how to solve the problem so I
  534.   will only give you the messages.
  535.  
  536. DOS ERROR - unable to create file
  537.  
  538. DOS ERROR - unable to open file
  539.  
  540. DOS ERROR - unable to read from file
  541.  
  542. DOS ERROR - unable to write to file
  543.  
  544.  
  545. * FATAL ERROR messages.  When one of those messages appear something is
  546.   really wrong and UNP cannot continue its work.  It will quit and
  547.   probably have an exitcode for the situation occurred.
  548.  
  549. FATAL ERROR - Decompressing many files into one.
  550.    You have specified a destination file, but there is more than one
  551.    source file.
  552.  
  553. FATAL ERROR - Divide overflow (INT 00h) generated by CPU.
  554.    This means that an invalid DIV instruction has been executed.
  555.    Normally this will cause DOS to terminate the program.  UNP hooks this
  556.    so it can set the interrupt's pointers back before the program quits.
  557.  
  558. FATAL ERROR - No files found matching FILENAME.EXT
  559.    UNP could not find any files to decompress.
  560.  
  561. FATAL ERROR - Not enough memory ...
  562.    UNP tried to allocated some memory but it got an error back.  This
  563.    message tells you what it needed the memory for.
  564.  
  565. FATAL ERROR - Output path/file must not contain '*' or '?'.
  566.    You have used wildcards in the destination file.  This is not allowed.
  567.  
  568. FATAL ERROR - User abort, ^C/^Break pressed (INT 23h).
  569.    Interrupt 23h is called when DOS detects that Ctrl-C or Ctrl-Break is
  570.    pressed.  UNP hooks this to be able to restore the interrupts it uses.
  571.  
  572.  
  573. WHAT UNP CAN HANDLE:
  574. --------------------
  575. Of course you would like to know what programs UNP can currently handle.
  576.  
  577. Well, here is a list of routines that UNP V3.20 is known to remove:
  578.  
  579. * routines found in .COM files
  580. CENTRAL POINT ANTI-VIRUS V1             ; immunize code
  581. COMPACK V4.4
  582. COMPACK V4.5
  583. DIET V1.00
  584. DIET V1.02b or V1.10a
  585. DIET V1.20
  586. ICE V1.00
  587. PKLITE V1.00ß
  588. PKLITE V1.03
  589. PKLITE V1.05
  590. PKLITE V1.12
  591. PKLITE V1.13
  592. PKLITE V1.14
  593. PKLITE V1.15
  594. PROTECT! COM/EXE V1.0 or V1.1
  595. PROTECT! COM/EXE V2.0
  596. PROTECT! COM/EXE V3.0
  597. PROTECT! COM/EXE V3.1
  598. PRO-PACK V2.08, emphasis on packed size
  599. PRO-PACK V2.08, emphasis on packed size, locked
  600. PRO-PACK V2.08, emphasis on unpacking speed
  601. PRO-PACK V2.08, emphasis on unpacking speed, locked
  602. SCRNCH V1.00
  603. SHRINK V1.00
  604.  
  605.  
  606. * routines found in .EXE files
  607. CENTRAL POINT ANTI-VIRUS V1             ; immunize code
  608. COMPACK V4.4
  609. COMPACK V4.5
  610. CRUNCHER V1.0                ; +.COM files
  611. DIET V1.01
  612. DIET V1.00d                ; small & large, with & without items
  613. DIET V1.02b, V1.10a or V1.20            ; small & large, with & without items
  614. DIET V1.44                              ; small, large + .COM files
  615. DIET V1.44, choose great SFX routine    ; small, large + .COM files
  616. DIET V1.45f                             ; small, large + .COM files
  617. DIET V1.45f choose great SFX routine    ; small, large + .COM files
  618. DISLITE V1.15 or higher                 ; small signatures (no items in sig)
  619. EXEPACK V4.00
  620. EXEPACK V4.05 or V4.06
  621. EXEPACK patched with EXPAKFIX V1.0
  622. LINK /EXEPACK V3.60 or V3.64
  623. LINK /EXEPACK V5.31.009
  624. KVETCH V1.02ß
  625. LZEXE V0.90
  626. LZEXE V0.91 or V1.00a
  627. PGMPAK V0.14
  628. PKLITE V1.00ß 0,1,2
  629. PKLITE V1.03  0,1,2,3
  630. PKLITE V1.05  0,1,2
  631. PKLITE V1.10  3
  632. PKLITE V1.12  0,1,2,3
  633. PKLITE V1.13  0,1,2,3
  634. PKLITE V1.14  0,1,2,3
  635. PKLITE V1.15  0,1,2,3
  636. PKLITE V1.20  1
  637. PKLITE V1.20  1,3
  638. PRO-PACK V2.08, emphasis on packed size
  639. PRO-PACK V2.08, emphasis on packed size, locked
  640. PRO-PACK V2.08, emphasis on unpacking speed
  641. PRO-PACK V2.08, emphasis on unpacking speed, locked
  642. PROTECT! COM/EXE V1.0
  643. PROTECT! COM/EXE V1.1
  644. PROTECT! COM/EXE V2.0
  645. PROTECT! COM/EXE V3.0
  646. PROTECT! COM/EXE V3.1
  647. SEA-AXE
  648. TINYPROG V1.0
  649. TINYPROG V3.3
  650. TINYPROG V3.6
  651. UNP V3.02 or higher                ; fake PKLITE signature
  652.  
  653. (Sorry, I lost count.  Who cares about statistics anyway?)
  654.  
  655.  
  656.  
  657. NOTES ON COMPRESSORS:
  658. ---------------------
  659. LZEXE V1.00a:
  660.    Several people have contacted me about this one.  This utility is the
  661.    same as LZEXE V0.91, except for some minor options.  It is offered
  662.    to the readers of INFO PC by IS2 France Diffusion (at least that's what
  663.    I think the text says).  Unfortunately I don't know where it's
  664.    available.
  665.  
  666. PGMPAK V0.14:
  667.    When you compress a file with this compressor, an overlay of 12 bytes
  668.    will be added.  To be exactly, the name and version number is added.
  669.    In this case: "PGMPAK V0.14".  This overlay is not automatically removed
  670.    when you decompress it.  To remove it, use the -R switch.
  671.  
  672. PKLITE:
  673.    PKLITE V1.00ß seems to have a bug in it.  While testing it, I found
  674.    that with some files an overlay of 512 bytes was added.  Needless to
  675.    say that when this happened the compressed file did not run correctly.
  676.    Since UNP writes the file back as it would be run in memory the file
  677.    decompressed with UNP wouldn't run either.  However extracting with
  678.    PKLITE -X resulted in the original file!  Since this version of pklite
  679.    is hardly used and even more unlikely is that someone wants to
  680.    decompress such a file I didn't bother to write a new routine that
  681.    fixes that bug.
  682.  
  683.    PKLITE V1.14 and up (according to the documentation) add the 'PK'
  684.    signature with extra compressed files to let the program check if it is
  685.    still compressed with PKLITE.  To avoid that the program detects it has
  686.    been decompressed UNP adds by default 14 bytes of code that places the
  687.    signature in the PSP like PKLITE does.
  688.  
  689. SCRUNCH:
  690.    In most cases, UNPs decompression routines are created when using
  691.    test files.  Unfortunately I don't have a copy of scrunch so this is
  692.    a bit difficult to ensure it works.  Of course there are other
  693.    decompression routines built the same way but the file I received
  694.    compressed with this compressor looked like it was converted to a
  695.    .COM file before it was compressed (it contained relocation items),
  696.    but this conversion could just as well be a part of the scrunch
  697.    compression.  If I receive more files compressed with this one I will
  698.    improve and adjust the routine when needed.
  699.  
  700. SHRINK V1.00:
  701.    This compressor is a bad implementation of Run Length compression.  It
  702.    contains two bugs one of which is in the decompression routine.  The
  703.    bugs are triggered when the file to be compressed contains all 256
  704.    bytes.  I have written my own decompression routine for this compressor
  705.    that is able to avoid one bug.  The other bug is that the last byte of
  706.    the compressed file is thrown away making it impossible to fully
  707.    rebuild the file.  If this is the case, UNP will display a warning.  It
  708.    is always better to decompress it, even if the last byte is missing.
  709.  
  710.  
  711.  
  712.  
  713. ERRORLEVEL VALUES:
  714. ------------------
  715.   0  no error occurred
  716.   1  help text is displayed
  717.   2  no files found to process
  718.   3  decompressing many files into 1 /  Outfile contains wildcards
  719.   4  some I/O error occurred
  720.   5  could not allocate enough memory
  721.   6  CPU generated divide overflow
  722.   7  user pressed ^C or ^Break
  723.  
  724.  
  725.  
  726. WHERE TO FIND UNP:
  727. ------------------
  728. Each time I have a new version of UNP available, I upload them to 2
  729. places:
  730. WSMR-SIMTEL20.Army.Mil (Simtel20)
  731.    Ask your local Internet or FTP expert on how to get them.
  732.  
  733. MegaVolt BBS (support site of unp)
  734.    tel. +31-30-211143
  735.    speeds up to 14k4
  736. If you need any help, got questions or files you want me to look at, you
  737. can call this BBS.  There is a special UNP menu with everything you need.
  738.  
  739.  
  740.  
  741.  
  742. HOW TO REGISTER:
  743. ----------------
  744. I have decided to release UNP as freewhere.  You are allowed to test this
  745. program freely for a period of two weeks.  If you decide to continue using
  746. UNP you are expected to let me (the author) know where you are using my
  747. program.  To do this, send a postcard with some picture of your city to
  748. the adress found at the end of the document.  I would appreciate if you
  749. would mention your full name and version you are using.  Ofcourse if you
  750. have got any suggestions you can put them on it as well!
  751.  
  752. Please don't feel offended by all of this, I just want to how much people
  753. find any use for UNP.  And hey, it beats sending money!
  754.  
  755.  
  756.  
  757. STILL LOOKING:
  758. --------------
  759. I am still trying to improve my program.  If you'd like to help me with
  760. that and you think you've got something useful, like a compressor or some
  761. other program that manipulates files, please contact me or mail me the
  762. program.
  763.  
  764.   Programs I own a copy of or have access to:
  765. COMPACK V4.4
  766. COMPACK V4.5
  767. CRUNCHER V1.0
  768. CENTRAL POINT ANTI-VIRUS V1
  769. DIET V1.00d
  770. DIET V1.02b
  771. DIET V1.10a
  772. DIET V1.20
  773. DIET V1.44
  774. DIET V1.45f
  775. EXEPACK V4.00
  776. EXEPACK V4.05
  777. EXEPACK V4.06
  778. KVETCH V1.02ß
  779. LINK V3.60
  780. LINK V3.64
  781. LZEXE V0.90
  782. LZEXE V0.91
  783. LZEXE V1.00a
  784. PGMPAK V0.14
  785. PKLITE V1.00ß
  786. PKLITE V1.03
  787. PKLITE V1.05
  788. PKLITE V1.12
  789. PKLITE V1.12 Professional
  790. PKLITE V1.13
  791. PKLITE V1.14
  792. PKLITE V1.15
  793. PKLITE V1.15 Professional
  794. PROTECT! EXE/COM V1.0
  795. PROTECT! EXE/COM V1.1
  796. PROTECT! EXE/COM V2.0
  797. PROTECT! EXE/COM V3.0
  798. SCRNCH V1.00
  799. SHRINK V1.00
  800. TINYPROG V1.0
  801. TINYPROG V3.3
  802. TINYPROG V3.6
  803.  
  804. I also have a copy of SYSPACK V0.1 and SLIM V1.10 but these programs do
  805. not really fit into UNP.
  806.  
  807.  
  808.  
  809. LATEST VERSION:
  810. ---------------
  811. People have asked me how I make my programs available to the public.
  812. Well, the first widespread version is V2.13 which I uploaded to Simtel
  813. (a large Internet repository containing many MS-DOS files).  I am unsure
  814. how files are handled on Simtel but it seems that a file uploaded there
  815. is made available on WSMR-SIMTEL20.Army.Mil and OAK.Oakland.Edu
  816. automatically. There are several additional anonymous FTP sites that
  817. mirror Simtel including wuarchive.wustl.edu.
  818.  
  819. Since I don't have FTP access I don't know how to get it through FTP :(
  820.  
  821.  
  822.  
  823. THANKS:
  824. -------
  825. Although I did all the programming, many people have helped me improve
  826. this program.  So thanks go to (in alphabetical order):
  827.  
  828. Kent Berggren, Vesselin Vladimirov Bontchev, Jan-Pieter Cornet,
  829. Kemal Djakman, Zago Franck, Tjalve Godager, Kai-Uwe Herbing,
  830. Hamish Hubbard, Yaron Keren, David Kirschbaum, Michael D. Lawler,
  831. Onno van der Linden, Brian Petersen, Inbar Raz, I. Romanek, Martin Saxer,
  832. Martin van der Vis, Simon Wiatr
  833.  
  834. And many others, including all those people who noticed the infamous LZEXE
  835. bug in V2.13.
  836.  
  837.  
  838.  
  839. CONTACTING ME:
  840. --------------
  841. If you want to contact me, my address and E-mail address can be found
  842. below this text.  Though E-mail used to be the fastest way to contact me,
  843. it might take some time after, let's say, May 1993.  After that I will
  844. probably be working as a trainee somewhere and don't know if I will have
  845. the time to go to the school on a regular basis.
  846.  
  847. I will respond, just don't expect a fast response.  However, after my
  848. trainee period ends (August 1994) I should have full access again for at
  849. least a year!
  850.  
  851.  
  852. My address:                       E-Mail (see above):
  853.   Ben Castricum                     benc@solist.htsa.aha.nl
  854.   Van Loenenlaan 10
  855.   1945 TX  Beverwijk
  856.   The Netherlands
  857.  
  858.  
  859. *** end of UNP V3.13 documentation ***
  860.